package com.pilipala.service;

import com.pilipala.dto.*;
import com.pilipala.result.PageResult;
import com.pilipala.vo.BlogVO;

public interface BlogService {

    /**
     * 添加博客
     * @param blogDTO 博客内容
     */
    void create(BlogDTO blogDTO);

    PageResult listByCondition(BlogSearchDTO blogSearchDTO);

    /**
     * 无条件获取所有Blog
     * @param blogSearchDTO 页码、页大小
     * @return 分页后的结果
     */
    PageResult list(BlogSearchDTO blogSearchDTO);

    /**
     * 分页搜索
     * @param searchDTO 包括页码、页大小、搜索关键字、排序类型
     * @return 分页后的数据
     */
    PageResult search(SearchDTO searchDTO);


    /**
     * 根据博客Id获取博客
     * @param id 博客Id
     * @return 返沪博客数据
     */
    BlogVO getById(Long id);

    /**
     * 删除指定blog
     * @param id Blog的Id
     */
    void delete(Long id);

    /**
     * 根据blog的Id修改blog
     * @param updateBlogDTO 包括title、content、description、id--blog的
     * **/
    void update(UpdateBlogDTO updateBlogDTO);

    /**
     * 获取收藏的blog
     * @param pageinationDTO 页码、页大小
     * @return 分页后的数据
     */
    PageResult getCollection(PageinationDTO pageinationDTO);

    /**
     * 收藏blog
     * @param blogId 博客id
     */
    void collection(Long blogId);

    /**
     * 点赞博客
     * @param blogId 博客Id
     */
    void likes(Long blogId);
}
